हिन्दी

गूगल क्लाउड फंक्शन्स के साथ सर्वरलेस कंप्यूटिंग की शक्ति को जानें। यह गाइड एचटीटीपी ट्रिगर्स की पड़ताल करती है, जिससे डेवलपर्स स्केलेबल, इवेंट-ड्रिवन एप्लिकेशन बना सकें।

गूगल क्लाउड फंक्शन्स: एचटीटीपी ट्रिगर्स के लिए एक व्यापक गाइड

गूगल क्लाउड फंक्शन्स (GCF) एक सर्वरलेस निष्पादन वातावरण है जो आपको क्लाउड सेवाओं को बनाने और जोड़ने की सुविधा देता है। क्लाउड फंक्शन्स के साथ, आप सरल, एकल-उद्देश्यीय फ़ंक्शन लिखते हैं जो आपके क्लाउड इन्फ्रास्ट्रक्चर और सेवाओं से उत्सर्जित होने वाली घटनाओं से जुड़े होते हैं। आप जिस घटना पर नज़र रख रहे हैं, उसके घटित होने पर आपका फ़ंक्शन निष्पादित होता है। यह दृष्टिकोण आपको सर्वर या रनटाइम का प्रबंधन किए बिना इवेंट-ड्रिवन एप्लिकेशन विकसित करने की अनुमति देता है।

क्लाउड फ़ंक्शन को ट्रिगर करने के सबसे सामान्य तरीकों में से एक एचटीटीपी अनुरोध के माध्यम से है। यह गाइड गूगल क्लाउड फंक्शन्स में एचटीटीपी ट्रिगर्स की दुनिया में गहराई से जाएगी, जो आपको शक्तिशाली, स्केलेबल और लागत प्रभावी एप्लिकेशन बनाने का ज्ञान प्रदान करेगी।

एचटीटीपी ट्रिगर क्या हैं?

एक एचटीटीपी ट्रिगर आपको एचटीटीपी अनुरोध के जवाब में अपने क्लाउड फ़ंक्शन को निष्पादित करने की अनुमति देता है। अनिवार्य रूप से, जब एक एचटीटीपी अनुरोध एक विशिष्ट यूआरएल पर भेजा जाता है, तो गूगल क्लाउड फंक्शन्स स्वचालित रूप से संबंधित फ़ंक्शन को निष्पादित करेगा। यह एचटीटीपी ट्रिगर्स को एपीआई, वेबहुक्स और इवेंट-ड्रिवन वेब एप्लिकेशन बनाने के लिए आदर्श बनाता है।

एचटीटीपी ट्रिगर्स का उपयोग करने के प्रमुख लाभ:

एचटीटीपी ट्रिगर के साथ क्लाउड फ़ंक्शन बनाना

आइए एक एचटीटीपी ट्रिगर के साथ एक साधारण क्लाउड फ़ंक्शन बनाने की प्रक्रिया को देखें। हम एक ऐसा फ़ंक्शन बनाएंगे जो "हैलो, वर्ल्ड!" संदेश के साथ प्रतिक्रिया करता है। इस उदाहरण को आउटपुट स्ट्रिंग को संशोधित करके विभिन्न वैश्विक स्थानों के लिए अनुकूलित किया जा सकता है।

पूर्व-आवश्यकताएँ:

चरण:

  1. एक नया प्रोजेक्ट बनाएँ (यदि आपके पास एक नहीं है):

    यदि आपके पास पहले से GCP प्रोजेक्ट नहीं है, तो गूगल क्लाउड कंसोल में एक नया प्रोजेक्ट बनाएँ।

  2. क्लाउड फंक्शन्स एपीआई सक्षम करें:

    क्लाउड कंसोल में, क्लाउड फंक्शन्स एपीआई पर नेविगेट करें और इसे सक्षम करें।

  3. एक फ़ंक्शन डायरेक्टरी बनाएँ:

    अपने क्लाउड फ़ंक्शन के लिए एक नई डायरेक्टरी बनाएँ। उदाहरण के लिए:

    mkdir hello-http
    cd hello-http
  4. फ़ंक्शन कोड लिखें:

    निम्नलिखित कोड के साथ `main.py` (या Node.js के लिए `index.js`) नामक एक फ़ाइल बनाएँ:

    पाइथन (main.py):

    def hello_http(request):
        """HTTP Cloud Function.
        Args:
            request (flask.Request): The request object.
            <https://flask.palletsprojects.com/en/1.1.x/api/#flask.Request>
        Returns:
            The response text, or any set of values that can be turned into a
            Response object using `make_response`
            <https://flask.palletsprojects.com/en/1.1.x/api/#flask.Flask.make_response>.
        """
        request_json = request.get_json(silent=True)
        request_args = request.args
    
        if request_json and 'name' in request_json:
            name = request_json['name']
        elif request_args and 'name' in request_args:
            name = request_args['name']
        else:
            name = 'World'
        return f'Hello, {name}!'

    Node.js (index.js):

    exports.helloHttp = (req, res) => {
      let name = 'World';
      if (req.body.name) {
        name = req.body.name;
      } else if (req.query.name) {
        name = req.query.name;
      }
      res.status(200).send(`Hello, ${name}!`);
    };
    
  5. एक रिक्वायरमेंट्स फ़ाइल बनाएँ (केवल पाइथन):

    यदि आप पाइथन का उपयोग कर रहे हैं, तो `requirements.txt` नामक एक फ़ाइल बनाएँ और अपनी फ़ंक्शन को आवश्यक किसी भी निर्भरता को जोड़ें। इस उदाहरण के लिए, इसकी सख्त आवश्यकता नहीं है, लेकिन इसे शामिल करना एक अच्छी आदत है। यदि आपके पास कोई निर्भरता नहीं है तो आप इसे खाली छोड़ सकते हैं।

  6. फ़ंक्शन परिनियोजित करें:

    अपने फ़ंक्शन को परिनियोजित करने के लिए `gcloud functions deploy` कमांड का उपयोग करें। `YOUR_FUNCTION_NAME` को अपने फ़ंक्शन के वांछित नाम से बदलें।

    पाइथन:

    gcloud functions deploy YOUR_FUNCTION_NAME \\
        --runtime python39 \\
        --trigger-http \\
        --allow-unauthenticated

    Node.js:

    gcloud functions deploy YOUR_FUNCTION_NAME \\
        --runtime nodejs16 \\
        --trigger-http \\
        --allow-unauthenticated

    पैरामीटर्स की व्याख्या:

    • `YOUR_FUNCTION_NAME`: वह नाम जो आप अपने क्लाउड फ़ंक्शन को देना चाहते हैं।
    • `--runtime`: आपके फ़ंक्शन के लिए रनटाइम वातावरण (उदाहरण के लिए, `python39`, `nodejs16`)।
    • `--trigger-http`: यह निर्दिष्ट करता है कि फ़ंक्शन को एचटीटीपी अनुरोधों द्वारा ट्रिगर किया जाना चाहिए।
    • `--allow-unauthenticated`: प्रमाणीकरण के बिना किसी को भी फ़ंक्शन को इनवोक करने की अनुमति देता है। चेतावनी: उत्पादन वातावरण में इसे सक्षम करते समय सावधानी बरतें! उचित प्रमाणीकरण और प्राधिकरण को लागू करने पर विचार करें।
  7. फ़ंक्शन का परीक्षण करें:

    परिनियोजन के बाद, `gcloud` कमांड आपके फ़ंक्शन का यूआरएल आउटपुट करेगा। फिर आप `curl` या Postman जैसे टूल का उपयोग करके उस यूआरएल पर एक एचटीटीपी अनुरोध भेजकर इसका परीक्षण कर सकते हैं।

    curl YOUR_FUNCTION_URL

    आपको प्रतिक्रिया में "हैलो, वर्ल्ड!" संदेश दिखना चाहिए। आप एक क्वेरी पैरामीटर के रूप में एक नाम भी पास कर सकते हैं:

    curl \"YOUR_FUNCTION_URL?name=YourName\"

    यह "हैलो, YourName!" लौटाना चाहिए

एचटीटीपी अनुरोध और प्रतिक्रिया को समझना

जब एक क्लाउड फ़ंक्शन एचटीटीपी अनुरोध द्वारा ट्रिगर होता है, तो उसे अनुरोध के बारे में जानकारी वाला एक ऑब्जेक्ट प्राप्त होता है। इस ऑब्जेक्ट में आमतौर पर शामिल होता है:

आपके फ़ंक्शन को तब एक एचटीटीपी प्रतिक्रिया वापस करनी चाहिए, जिसमें शामिल है:

उदाहरण: विभिन्न एचटीटीपी मेथड्स को संभालना

यहां बताया गया है कि आप अपने क्लाउड फ़ंक्शन में विभिन्न एचटीटीपी मेथड्स को कैसे संभाल सकते हैं:

पाइथन (main.py):

from flask import escape

def http_method(request):
    \"\"\"किसी भी एचटीटीपी अनुरोध का जवाब देता है।
    Args:
        request (flask.Request): एचटीटीपी अनुरोध ऑब्जेक्ट।
    Returns:
        प्रतिक्रिया टेक्स्ट या मानों का कोई भी सेट जिसे
        `make_response`<https://flask.palletsprojects.com/en/2.0.x/api/#flask.Flask.make_response> का उपयोग करके
        Response ऑब्जेक्ट में बदला जा सकता है।
    \"\"\"
    if request.method == 'GET':
        return 'यह एक GET अनुरोध है!'
    elif request.method == 'POST':
        request_json = request.get_json(silent=True)
        if request_json and 'message' in request_json:
            message = escape(request_json['message'])
            return f'यह संदेश के साथ एक POST अनुरोध है: {message}'
        else:
            return 'यह संदेश के बिना एक POST अनुरोध है।'
    else:
        return 'असमर्थित एचटीटीपी मेथड।', 405

Node.js (index.js):

exports.httpMethod = (req, res) => {
  switch (req.method) {
    case 'GET':
      res.status(200).send('यह एक GET अनुरोध है!');
      break;
    case 'POST':
      if (req.body.message) {
        const message = req.body.message;
        res.status(200).send(`यह संदेश के साथ एक POST अनुरोध है: ${message}`);
      } else {
        res.status(200).send('यह संदेश के बिना एक POST अनुरोध है।');
      }
      break;
    default:
      res.status(405).send('असमर्थित एचटीटीपी मेथड!');
      break;
  }
};

अपडेटेड फ़ंक्शन को `gcloud functions deploy` कमांड का उपयोग करके परिनियोजित करना याद रखें।

अपने एचटीटीपी ट्रिगर्स को सुरक्षित करना

एचटीटीपी ट्रिगर्स के साथ काम करते समय सुरक्षा सर्वोपरि है, खासकर संवेदनशील डेटा या महत्वपूर्ण संचालन से निपटते समय। यहां कुछ प्रमुख सुरक्षा विचार दिए गए हैं:

प्रमाणीकरण और प्राधिकरण

डिफ़ॉल्ट रूप से, एचटीटीपी द्वारा ट्रिगर किए गए क्लाउड फंक्शन्स सार्वजनिक रूप से सुलभ होते हैं यदि आप `--allow-unauthenticated` का उपयोग करते हैं। अधिकांश उत्पादन परिदृश्यों में, आप अधिकृत उपयोगकर्ताओं या सेवाओं तक पहुंच को प्रतिबंधित करना चाहेंगे। गूगल क्लाउड प्रमाणीकरण और प्राधिकरण के लिए कई विकल्प प्रदान करता है:

इनपुट सत्यापन

SQL इंजेक्शन या क्रॉस-साइट स्क्रिप्टिंग (XSS) जैसी सुरक्षा कमजोरियों को रोकने के लिए अपने क्लाउड फ़ंक्शन द्वारा प्राप्त इनपुट डेटा को हमेशा मान्य करें। दुर्भावनापूर्ण इनपुट से बचाने के लिए उचित सैनिटाइजेशन और एस्केपिंग तकनीकों का उपयोग करें।

एचटीटीपीएस

यह सुनिश्चित करें कि आपका क्लाउड फ़ंक्शन केवल एचटीटीपीएस पर ही सुलभ है ताकि क्लाइंट और फ़ंक्शन के बीच संचार को एन्क्रिप्ट किया जा सके। गूगल क्लाउड फंक्शन्स स्वचालित रूप से एचटीटीपीएस एंडपॉइंट प्रदान करते हैं।

रेट लिमिटिंग

दुरुपयोग और सेवा से इनकार (DoS) हमलों को रोकने के लिए रेट लिमिटिंग लागू करें। आप अपने क्लाउड फंक्शन्स को अत्यधिक ट्रैफिक से बचाने के लिए गूगल क्लाउड आर्मर जैसी सेवाओं का उपयोग कर सकते हैं।

एचटीटीपी ट्रिगर्स के लिए उपयोग के मामले

एचटीटीपी ट्रिगर बहुमुखी हैं और अनुप्रयोगों की एक विस्तृत श्रृंखला में उपयोग किए जा सकते हैं। यहां कुछ सामान्य उपयोग के मामले दिए गए हैं:

विभिन्न उद्योगों में उदाहरण

उन्नत तकनीकें

पर्यावरण चर का उपयोग करना

पर्यावरण चर आपको अपने कोड में संवेदनशील जानकारी या कॉन्फ़िगरेशन मानों को हार्डकोड किए बिना अपने क्लाउड फ़ंक्शन को कॉन्फ़िगर करने की अनुमति देते हैं। आप `gcloud functions deploy` कमांड का उपयोग करके या गूगल क्लाउड कंसोल में पर्यावरण चर सेट कर सकते हैं।

gcloud functions deploy YOUR_FUNCTION_NAME \\
    --runtime python39 \\
    --trigger-http \\
    --set-env-vars API_KEY=YOUR_API_KEY,DATABASE_URL=YOUR_DATABASE_URL

अपने कोड में, आप `os.environ` डिक्शनरी (पाइथन) या `process.env` ऑब्जेक्ट (Node.js) का उपयोग करके पर्यावरण चर तक पहुंच सकते हैं।

पाइथन:

import os

def your_function(request):
    api_key = os.environ.get('API_KEY')
    # Use the API key in your function
    return f'API Key: {api_key}'

Node.js:

exports.yourFunction = (req, res) => {
  const apiKey = process.env.API_KEY;
  // Use the API key in your function
  res.status(200).send(`API Key: ${apiKey}`);
};

अतुल्यकालिक कार्यों को संभालना

लंबे समय तक चलने वाले या कंप्यूटेशनल रूप से गहन कार्यों के लिए, एचटीटीपी अनुरोध को अवरुद्ध करने से बचने के लिए अतुल्यकालिक प्रसंस्करण का उपयोग करना सबसे अच्छा है। आप इन कार्यों को अलग-अलग कतारों में ऑफलोड करने के लिए गूगल क्लाउड टास्क या क्लाउड पब/सब जैसी सेवाओं का उपयोग कर सकते हैं।

त्रुटि प्रबंधन और लॉगिंग

समस्याओं को तुरंत पहचानने और हल करने के लिए अपने क्लाउड फंक्शन्स में मजबूत त्रुटि प्रबंधन और लॉगिंग लागू करें। अपने फंक्शन्स से लॉग एकत्र करने और उनके प्रदर्शन की निगरानी के लिए गूगल क्लाउड लॉगिंग का उपयोग करें।

सर्वोत्तम अभ्यास

सामान्य मुद्दों का निवारण

निष्कर्ष

एचटीटीपी ट्रिगर्स के साथ गूगल क्लाउड फंक्शन्स सर्वरलेस एप्लिकेशन बनाने का एक शक्तिशाली और लचीला तरीका प्रदान करते हैं। इस गाइड में चर्चा की गई अवधारणाओं और तकनीकों को समझकर, आप वैश्विक दर्शकों के लिए स्केलेबल, लागत प्रभावी और इवेंट-ड्रिवन समाधान बनाने के लिए क्लाउड फंक्शन्स की शक्ति का लाभ उठा सकते हैं। सर्वरलेस क्रांति को अपनाएं और अपने क्लाउड एप्लिकेशन की पूरी क्षमता को अनलॉक करें!

गूगल क्लाउड फंक्शन्स: एचटीटीपी ट्रिगर्स के लिए एक व्यापक गाइड | MLOG